package com.virtium.vpc.dao.hibernate;

import com.virtium.vpc.dao.DAOFactory;
import com.virtium.vpc.dao.VpcCongigurationDAO;
import com.virtium.vpc.dao.VpcDensityDAO;
import com.virtium.vpc.dao.VpcFormfactorDAO;
import com.virtium.vpc.dao.VpcHeightDAO;
import com.virtium.vpc.dao.VpcModulerankDAO;
import com.virtium.vpc.dao.VpcPackageDAO;
import com.virtium.vpc.dao.VpcProductDAO;
import com.virtium.vpc.dao.VpcProductstatusDAO;
import com.virtium.vpc.dao.VpcRamdensityDAO;
import com.virtium.vpc.dao.VpcRevisiontypeDAO;
import com.virtium.vpc.dao.VpcSpeedDAO;
import com.virtium.vpc.dao.VpcSsdramdensityDAO;
import com.virtium.vpc.dao.VpcTechnologyDAO;
import com.virtium.vpc.dao.VpcThicknessDAO;

/**
 * Returns Hibernate-specific instances of DAOs.
 * <p/>
 * One of the responsiblities of the factory is to inject a Hibernate Session
 * into the DAOs. You can customize the getCurrentSession() method if you are
 * not using the default strategy, which simply delegates to Hibernates built-in
 * "current Session" mechanism. This factory uses HibernateUtil to get access to
 * the SessionFactory.
 * <p/>
 * If for a particular DAO there is no additional non-CRUD functionality, we use
 * a nested static class to implement the interface in a generic way. This
 * allows clean refactoring later on, should the interface implement business
 * data access methods at some later time. Then, we would externalize the
 * implementation into its own first-level class.
 * 
 * @author TuanAnh
 */
public class HibernateDAOFactory extends DAOFactory {

	
	public VpcCongigurationDAO getVpcCongigurationDAO() {
		return new VpcCongigurationDAOHibernate();
	}	

	public VpcDensityDAO getVpcDensityDAO() {
		return new VpcDensityDAOHibernate();
	}	

	public VpcModulerankDAO getVpcModulerankDAO() {
		return new VpcModulerankDAOHibernate();
	}	

	public VpcPackageDAO getVpcPackageDAO() {
		return new VpcPackageDAOHibernate();
	}
	
	public VpcProductDAO getVpcProductDAO() {
		return new VpcProductDAOHibernate();
	}

	public VpcProductstatusDAO getVpcProductstatusDAO() {
		return new VpcProductstatusDAOHibernate();
	}	

	public VpcRevisiontypeDAO getVpcRevisiontypeDAO() {
		return new VpcRevisiontypeDAOHibernate();
	}

	public VpcTechnologyDAO getVpcTechnologyDAO() {
		return new VpcTechnologyDAOHibernate();
	}	

	public VpcRamdensityDAO getVpcRamdensityDAO() {
		return new VpcRamdensityDAOHibernate();
	}

	public VpcFormfactorDAO getVpcFormfactorDAO() {

		return new VpcFormfactorDAOHibernate();
	}

	public VpcThicknessDAO getThicknessDAO() {
		return new VpcThicknessDAOHibernate();
	}

	public VpcHeightDAO getVpcHeightDAO() {
		return new VpcHeightDAOHibernate();
	}

	
	public VpcSpeedDAO getVpcSpeedDAO() {
		return new VpcSpeedDAOHibernate();
	}

	public VpcSsdramdensityDAO getVpcSsdramdensityDAO() {
		return new VpcSsdramdensityDAOHibernate();
	}

}
